Acoustic echo and noise cancellation

ABSTRACT

Stereo echo cancellation is necessary to overcome the objections observed by, for example, teleconferencing, voice controlled video/audio apparatuses, etc. To improve the existing filters, an adaptive filter is used along with a signal processing device which obtain the coefficient updates in the transformed domain, reducing the required calculation complexity. Further, the filter includes circuitry for reducing the correlation between the input signals on the coefficient updates.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The invention relates to a filter comprising at least two inputs for receiving at least two signals, and an output for supplying an output signal.

The invention further relates to a signal processing device comprising such a filter.

The invention further relates to a teleconferencing system, a voice-controlled electronic device, and a noise cancellation system.

The invention further relates to a method for filtering at least two signals and for supplying an output signal.

Recent developments in audio and video systems require the use of multiple channel processing and reproduction with acoustic echo cancellers (AEC) and noise cancellers. For example in mini-group video conferencing systems, multiple channel transmission leads to a better “localization” of the diverse people in the room. This enhances the intelligibility and naturalness of the speech.

Further, multiple channel echo cancellation is needed in voice-controlled stereo audio and video equipment, such as television receivers, radio receivers, CD players, etc.

A multiple channel AEC can, in general, not be created by a simple combination of multiple single channel AEC's.

2. Description of the Related Art

U.S. Pat. No. 5,828,756 discloses a stereophonic communication system, such as a teleconferencing system, which involves selectively reducing the correlation between the individual channel signals of the stereophonic system. Herein, non-linearities are added to the input signals to reduce the correlation. However by adding these non-linearities, audible artifacts in the output signals are introduced. These non-linearities can (sometimes) be accepted in teleconferencing systems but are certainly not acceptable in other applications, such as supplying music, etc.

SUMMARY OF THE INVENTION

It is, inter alia, an object of the invention to provide a filter, which overcomes the objections of the prior art. To this end a first aspect of the invention provides a filter described in the opening paragraph, characterized in that the coefficient updates are determined in a transformed domain, and the filter comprises means for reducing the effect of correlation between the input signals on the coefficient updates.

Herewith, the performance of the adaptive filters is improved without a huge increase in computational complexity.

BRIEF DESCRIPTION OF THE DRAWINGS

The invention and additional features, which may be optionally used to implement the invention to advantage, will be apparent from and elucidated with references to the examples described below, hereinafter and shown in the accompanying drawings, in which:

FIG. 1 schematically shows the multiple input adaptive FIR filter, according to the invention;

FIG. 2 schematically shows the calculation of the output of the FIR filter, according to the invention;

FIG. 3 schematically shows the calculation of Y in the Multiple Input Partitioned Frequency Domain adaptive filter, according to the invention for the case with direct inverse power estimation;

FIG. 4 schematically shows the calculation of the coefficient vectors w _(i) according to the invention;

FIG. 5 shows a schematic example of a stereo echo cancellation in a teleconferencing system according to the invention,

FIG. 6 shows a more detailed schematic example of a teleconferencing system according to the invention;

FIG. 7 shows a schematic example of a voice controlled device according to the invention;

FIG. 8 shows a schematic example of a noise canceller according to the invention; and

FIG. 9 schematically shows the determining of the input channel's power matrix.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

In the description, the equations, matrices, etc., are shown as described below. Signals are denoted by lower case characters, constants by upper case. Underlining is used for vectors, lower case for time domain, and upper case for frequency domain. Matrices are denoted by bold face upper case, e.g., I. The dimension is put in superscript (e.g., the B×Q matrix X is given by X^(B,Q), for a square matrix the second dimension is omitted). Diagonal matrices are denoted by a double underline, e.g., P, with its diagonal denoted as P=diag {P}. A subscript i, e.g., w_(i), denotes the i'th version. The k'th element of w is given by (w)_(k). Finally, appending [k] denotes the time index, (.)^(t) denotes the transpose, (.)* denotes the complex conjugate, and (.)^(h) denotes the Hermitain transpose (complex conjugate transpose).

A general multiple input adaptive FIR filter, depicted in FIG. 1, uses the S signals x₀ [k] to x_(s−1)[k] to remove unwanted components correlated with these signals in the signal e[k]. The signals x₀ [k] to x_(s−1)[k] are input to S FIR-filters W₀ to W_(s−1), with outputs ê₀[k] to ê_(s−1)[k]. The goal of the update algorithm is to adapt the coefficients of the FIR filters in such a way that the correlation between r[k] and the input signals x₀ [k] and x_(s−1)[k] is removed.

For S>a≧0, the FIR filter W_(a) performs the convolution of the signal x_(a)[k] and the coefficients w_(a,0)[k] . . . w_(a,N−1)[k] of that filter. The output signal ê_(a)[k] of such a filter can be described as follows

$\begin{matrix} \begin{matrix} {{{\hat{e}}_{a}\lbrack k\rbrack} = {\sum\limits_{i = 0}^{N - 1}\;{{x_{a}\left\lbrack {k - i} \right\rbrack} \cdot {w_{a,i}\lbrack k\rbrack}}}} \\ {= {\left( {{\underset{\_}{x}}_{a}^{N}\lbrack k\rbrack} \right)^{t} \cdot {{\underset{\_}{w}}_{a}^{N}\lbrack k\rbrack}}} \end{matrix} & (1) \end{matrix}$ With, for S>a≧0,

$\begin{matrix} {{{\underset{\_}{x}}_{a}^{N}\lbrack k\rbrack} = \begin{pmatrix} {x_{a}\left\lbrack {k - N + 1} \right\rbrack} \\ \vdots \\ {x_{a}\left\lbrack {k - 1} \right\rbrack} \\ {x_{a}\lbrack k\rbrack} \end{pmatrix}} & (2) \\ {{{\underset{\_}{w}}_{a}^{N}\lbrack k\rbrack} = {\begin{pmatrix} {w_{a,{N - 1}}\lbrack k\rbrack} \\ \vdots \\ {w_{a,1}\lbrack k\rbrack} \\ {w_{a,0}\lbrack k\rbrack} \end{pmatrix}.}} & (3) \end{matrix}$

The output of the multiple input adaptive filter is given by

$\begin{matrix} {{r\lbrack k\rbrack} = {{e\lbrack k\rbrack} - {\sum\limits_{a = 0}^{S - 1}\;{{{\hat{e}}_{a}\lbrack k\rbrack}.}}}} & (4) \end{matrix}$

These filter parts of the separate (adaptive) filters W₀ until W_(S−1) can be implemented efficiently in frequency domain with help of partitioning, block processing and Discrete Fourier Transforms (DFTs). A reduction in computational complexity is obtained since the convolutions per sample in the time domain transform to element-wise multiplications per block in the frequency domain. We use block processing with block length B and DFTs of length M, with M≧N+B−1. The transformation of the input signals can be described for S>a≧0 by

$\begin{matrix} {{{{\underset{\_}{X}}_{a}^{M}\left\lbrack {k\; B} \right\rbrack} = {F^{M} \cdot \begin{pmatrix} {x_{a}\left\lbrack {{k\; B} - M + 1} \right\rbrack} \\ \vdots \\ {x_{a}\left\lbrack {k\; B} \right\rbrack} \end{pmatrix}}},} & (5) \end{matrix}$ where F^(M) is the M×M Fourier matrix. The (a,b)'th element (for 0≦a<M,0≦b<M) of the Fourier matrix is given by

$\begin{matrix} {\left( F^{M} \right)_{a,b} = {{\mathbb{e}}\frac{{- {j2\pi}}\; a\; b}{M}}} & (6) \end{matrix}$ where j=√{square root over (−1)}.

The filter can then be computed in the frequency domain, by

$\begin{matrix} \begin{matrix} {{\underset{\_}{\hat{e}}\left\lbrack {k\; B} \right\rbrack} = {\left( {0\mspace{14mu} I^{B}} \right){\sum\limits_{a = 0}^{S - 1}\;{{{\underset{\_}{\underset{\_}{X}}}_{a}^{M}\left\lbrack {k\; B} \right\rbrack}{{\underset{\_}{W}}_{a}^{M}\left\lbrack {k\; B} \right\rbrack}}}}} \\ {= {\begin{pmatrix} {\hat{e}\left\lbrack {{k\; B} - B + 1} \right\rbrack} \\ \vdots \\ {\hat{e}\left\lbrack {k\; B} \right\rbrack} \end{pmatrix}.}} \end{matrix} & (7) \end{matrix}$ Note that the frequency domain filter coefficients are related to the time domain coefficients, for all S>a≧0 this can be denoted by

$\begin{matrix} {{{\underset{\_}{W}}_{a}^{M}\lbrack l\rbrack} = {F^{M} \cdot {\begin{pmatrix} {w_{a},{0\lbrack l\rbrack}} \\ {w_{a},{1\lbrack l\rbrack}} \\ \vdots \\ {w_{a,{N - 1}}\lbrack l\rbrack} \\ \underset{\_}{0} \end{pmatrix}.}}} & (8) \end{matrix}$

To obtain an efficient implementation, the block length B must be chosen in the same order as the filter length N, which results a large processing delay.

To reduce the processing delay, the filter can be partitioned into smaller pieces of length B, and with g=┌N/B┐, we get the implementation of FIG. 2, that can be described by

$\begin{matrix} \begin{matrix} {{\underset{\_}{\hat{e}}\left\lbrack {k\; B} \right\rbrack} = {\left( {0\mspace{14mu} I^{B}} \right){\sum\limits_{a = 0}^{S - 1}{\sum\limits_{i = 1}^{g}\;{{{\underset{\_}{\underset{\_}{X}}}_{a}^{M}\left\lbrack {\left( {k - i} \right)\; B} \right\rbrack}{{\underset{\_}{W}}_{a,i}^{M}\left\lbrack {k\; B} \right\rbrack}}}}}} \\ {{{with}\mspace{14mu}{{\underset{\_}{W}}_{a,i}^{M}\lbrack l\rbrack}} = {F^{M} \cdot {\begin{pmatrix} {w_{a,{i\; B}}\lbrack l\rbrack} \\ {w_{a,{{i\; B} + 1}}\lbrack l\rbrack} \\ \vdots \\ {w_{a,{{i\; B} + B - 1}}\lbrack l\rbrack} \\ \underset{\_}{0} \end{pmatrix}.}}} \end{matrix} & (9) \end{matrix}$

For the update part of the filter, one can use S separate update algorithms to improve convergence behavior the input signals can be decorrelated separately in the time domain by using RLS like algorithms, leading to a huge computational complexity. Complexity reduction can be obtained by implementation in the frequency domain with (partitioned) Block Frequency Domain Adaptive Filters, as described in G. P. M. Egelmeers, Real time realization of large adaptive filters, Ph.D. thesis, Eindhoven University of Technology, Eindhoven (The Netherlands), November 1995. When there is correlation between the input signals of the filters, this might still lead to very bad convergence behavior, due to the non-uniqueness problem.

In this application, it is proposed to use a partitioned algorithm in the frequency domain that reduces the effect of the cross-correlation between the input signals on the algorithm's convergence behavior. To reduce complexity, block processing, with block length A to compute the sum of A consecutive updates with each iteration, is used. For S>a≧0, the coefficient vectors w _(a) ^(N)[lA] are partitioned into g_(u) parts of length Z with g_(u)=┌N/Z┐ such that, for S>j≧0

${{\underset{\_}{w}}_{j}^{N}\left\lbrack {l\; A} \right\rbrack} = \begin{pmatrix} {{\underset{\_}{w}}_{j,{{g\; u} - 1}}^{Z}\left\lbrack {l\; A} \right\rbrack} \\ \vdots \\ {{\underset{\_}{w}}_{j,1}^{Z}\left\lbrack {l\; A} \right\rbrack} \\ {{\underset{\_}{w}}_{j,0}^{Z}\left\lbrack {l\; A} \right\rbrack} \end{pmatrix}$ with for S>j≧0 and g_(u)>i≧0

${{\underset{\_}{w}}_{j,i}^{Z}\lbrack{lA}\rbrack} = {\left( \begin{matrix} {w_{j,{{iZ} + Z - 1}}\lbrack{lA}\rbrack} \\ \vdots \\ {w_{j,{{iZ} + 1}}\lbrack{lA}\rbrack} \\ {w_{j,{iZ}}\lbrack{lA}\rbrack} \end{matrix} \right).}$ A Fourier transform length L is used with L≧Z+A−1, we define the input signal Fourier transforms for S>a≧0 as

${{\underset{\_}{X}}_{a}^{L}\lbrack{lA}\rbrack} = {{F^{L} \cdot {{\underset{\_}{x}}_{a}^{L}\lbrack{lA}\rbrack}} = {{F^{L}\left( \begin{matrix} {x_{a}\left\lbrack {{lA} - L + 1} \right\rbrack} \\ \vdots \\ {x_{a}\left\lbrack {{lA} - 1} \right\rbrack} \\ {x_{a}\lbrack{lA}\rbrack} \end{matrix} \right)}.}}$ The diagonal matrices X _(a) ^(L)[lA] contain the vector X _(a) ^(L)[lA] as main diagonal, so for S>a≧0 X _(a) ^(L) [lA]=diag{ X _(a) ^(L) [lA]}. An overlap-save method is used to compute the correlation involved in the adaptation process in the frequency domain, the frequency domain transform of the residual signal vector equals

${{\underset{\_}{R}}^{L}\lbrack{lA}\rbrack} = {F^{L} \cdot {\begin{pmatrix} {\underset{\_}{0}}^{L - A} \\ {{\underset{\_}{r}}^{A}\lbrack{lA}\rbrack} \end{pmatrix}.}}$ The set of update equations for the filter coefficients in the MFDAF (Multiple Input Frequency Domain Adaptive Filter) algorithm can now be defined for g_(u)>i≧0 by

$\left( \begin{matrix} {{\underset{\_}{w}}_{{S - 1},i}^{Z}\left\lbrack {\left( {l + 1} \right)A} \right\rbrack} \\ \vdots \\ {{\underset{\_}{w}}_{1,i}^{Z}\left\lbrack {\left( {l + 1} \right)A} \right\rbrack} \\ {{\underset{\_}{w}}_{0,i}^{Z}\left\lbrack {\left( {l + 1} \right)A} \right\rbrack} \end{matrix} \right) = {\left( \begin{matrix} {{\underset{\_}{w}}_{{S - 1},i}^{Z}\lbrack{lA}\rbrack} \\ \vdots \\ {{\underset{\_}{w}}_{1,i}^{Z}\lbrack{lA}\rbrack} \\ {{\underset{\_}{w}}_{0,i}^{Z}\lbrack{lA}\rbrack} \end{matrix} \right) + {G^{{S.Z},{S.L}} \cdot \left( \begin{matrix} {\left( {{\underset{\_}{\underset{\_}{Y}}}_{S - 1}^{L}\left\lbrack \left( {{lA} - {iZ}} \right) \right\rbrack} \right)*} \\ \vdots \\ {\left( {{\underset{\_}{\underset{\_}{Y}}}_{1}^{L}\left\lbrack \left( {{lA} - {iZ}} \right) \right\rbrack} \right)*} \\ {\left( {{\underset{\_}{\underset{\_}{Y}}}_{0}^{L}\left\lbrack \left( {{lA} - {iZ}} \right) \right\rbrack} \right)*} \end{matrix} \right) \cdot {{\underset{\_}{R}}^{L}\lbrack{lA}\rbrack}}}$ with

$\left( \begin{matrix} {\left( {{\underset{\_}{\underset{\_}{Y}}}_{S - 1}^{L}\lbrack{lA}\rbrack} \right)*} \\ \vdots \\ {\left( {{\underset{\_}{\underset{\_}{Y}}}_{1}^{L}\lbrack{lA}\rbrack} \right)*} \\ {\left( {{\underset{\_}{\underset{\_}{Y}}}_{0}^{L}\lbrack{lA}\rbrack} \right)*} \end{matrix} \right) = {2{{\alpha\left( {P^{S.L}\lbrack{lA}\rbrack} \right)}^{- 1} \cdot \left( \begin{matrix} {\left( {{\underset{\_}{\underset{\_}{X}}}_{S - 1}^{L}\lbrack{lA}\rbrack} \right)*} \\ \vdots \\ {\left( {{\underset{\_}{\underset{\_}{X}}}_{1}^{L}\lbrack{lA}\rbrack} \right)*} \\ {\left( {{\underset{\_}{\underset{\_}{X}}}_{0}^{L}\lbrack{lA}\rbrack} \right)*} \end{matrix} \right)}}$ and the transformation matrix G^(S.Z,S.L) is given by

$G^{{S.Z},{S.L}}\left( \begin{matrix} G^{Z,L} & 0^{Z,L} & \cdots & 0^{Z,L} \\ 0^{Z,L} & \ddots & \ddots & \vdots \\ \vdots & \ddots & \ddots & 0^{Z,L} \\ 0^{Z,L} & \cdots & 0^{Z,L} & G^{Z,L} \end{matrix} \right)$ with G ^(Z,L)=(J ^(Z)0^(Z,L-Z))(F ^(L))⁻¹. The input channel's power matrix P^(S.L) [lA] is defined by

$\begin{matrix} {{P^{S.L}\lbrack{lA}\rbrack} = {\frac{1}{L}\left\{ {\left( {X^{{S.L},L}\lbrack{lA}\rbrack} \right)*{.\left( {X^{{S.L},L}\lbrack{lA}\rbrack} \right)^{t}}} \right\}}} \\ {= {\frac{1}{L}\left( \begin{matrix} {ɛ\left\{ {\left( {{\underset{\_}{\underset{\_}{X}}}_{S - 1}^{L}\lbrack{lA}\rbrack} \right)*{{\underset{\_}{\underset{\_}{X}}}_{S - 1}^{L}\lbrack{lA}\rbrack}} \right\}} & \cdots & {ɛ\left\{ {\left( {{\underset{\_}{\underset{\_}{X}}}_{S - 1}^{L}\lbrack{lA}\rbrack} \right)*{{\underset{\_}{\underset{\_}{X}}}_{0}^{L}\lbrack{lA}\rbrack}} \right\}} \\ \vdots & ⋰ & \vdots \\ {ɛ\left\{ {\left( {{\underset{\_}{\underset{\_}{X}}}_{0}^{L}\lbrack{lA}\rbrack} \right)*{{\underset{\_}{\underset{\_}{X}}}_{S - 1}^{L}\lbrack{lA}\rbrack}} \right\}} & \cdots & {ɛ\left\{ {\left( {{\underset{\_}{\underset{\_}{X}}}_{0}^{L}\lbrack{lA}\rbrack} \right)*{{\underset{\_}{\underset{\_}{X}}}_{0}^{L}\lbrack{lA}\rbrack}} \right\}} \end{matrix} \right)}} \end{matrix}$ where

${X^{{S.L},L}\lbrack{lA}\rbrack} = {\left( \begin{matrix} {{\underset{\_}{\underset{\_}{X}}}_{S - 1}^{L}\lbrack{lA}\rbrack} \\ \vdots \\ {{\underset{\_}{\underset{\_}{X}}}_{1}^{L}\lbrack{lA}\rbrack} \\ {{\underset{\_}{\underset{\_}{X}}}_{0}^{L}\lbrack{lA}\rbrack} \end{matrix} \right).}$ The expectation operator ε { } of the above equation has to be replaced by an estimation routine.

The power matrix P^(S.L) [lA] can be estimated by

$\begin{matrix} {{P^{S.L}\lbrack{lA}\rbrack} = {{\left( {1 - \gamma} \right){P^{S.L}\left\lbrack {\left( {l - 1} \right)A} \right\rbrack}} + {\frac{\gamma}{L}{\left( {X^{{S.L},L}\lbrack{lA}\rbrack} \right)^{*} \cdot \left( {X^{{S.L},L}\lbrack{lA}\rbrack} \right)^{t}}}}} & (10) \end{matrix}$

To reduce the number of multiplications, the step-size parameter α of equation is incorporated in the above power estimation routine by defining

$\begin{matrix} {{P_{\alpha}^{S.L}\lbrack{lA}\rbrack} = {\frac{1}{2\alpha}{P^{S.L}\lbrack{lA}\rbrack}}} & (11) \end{matrix}$ so 2a(P ^(SL)[lA])⁻¹=(P _(a) ^(SL)[lA])⁻¹  (12) Estimation of the power matrix P_(a) ^(S.L)[lA] can then be done by

$\begin{matrix} {{P_{\alpha}^{S.L}\lbrack{lA}\rbrack} = {{\left( {1 - \gamma} \right) \cdot {P_{\alpha}^{S.L}\left\lbrack {\left( {l - 1} \right)A} \right\rbrack}} + {\frac{\gamma}{2\alpha\; L} \cdot \left( {X^{{S.L},L}\lbrack{lA}\rbrack} \right)^{*} \cdot {\left( {X^{{S.L},L}\lbrack{lA}\rbrack} \right)^{t}.}}}} & (13) \end{matrix}$ Direct application of this algorithm leads to stability problems. When the input signal power in a certain frequency bin is very small, the power in that bin will decrease to a (very) small value. The inverse of the matrix will then have large values and will be inaccurate (due to numerical and estimation errors) In the ideal case, the eigenvalues of the power matrix estimate cancel the eigenvalues of the input signal power matrix. Due to estimation errors, this goal is only approximated, and the mismatch introduces a deviation from the ideal convergence behavior and might even lead to instability. Especially when some of the eigenvalues of the estimate of the inverse power matrix get large, and do not (exactly) cancel a (small) eigenvalue of the input signal power matrix, instability might occur. A lower limit to the eigenvalues of the estimate of the power matrix can solve this problem. In the single channel case (or when we forget the cross-terms), we can solve this problem by applying a lower limit to the lower values. We can do this because the eigenvalues of a diagonal matrix are equal to the elements of the diagonal, so we actually limit the eigenvalues. In the multiple channel case we also have to limit the eigenvalues to assure stability, but these no longer equal the elements on the diagonal.

We know, however, that all eigenvalues of the power matrix are positive. We can now create a lower limit on the eigenvalues by shifting them by the suggested minimum. We know that for all eigenvalues λ of a matrix A, the determinant of A+(P_(min)−λ′)·I must be zero. So for all λ′, eigenvalue of A+P_(min)·I, there must be a λ, eigenvalue of A, such that λ′=λ+P_(min) (and the other way around). This means that by adding a constant P_(min) to the main diagonal of a matrix, all eigenvalues of that matrix are shifted by P_(min)). So we define:

${P_{\alpha,\lim}^{S.L}\lbrack{lA}\rbrack} = {{P_{\alpha}^{S.L}\lbrack{lA}\rbrack}{\frac{P_{\min}}{2\alpha} \cdot I^{S.L}}}$ which results in

${P_{\alpha,\lim}^{S.L}\lbrack{lA}\rbrack} = {{\left( {1 - \gamma} \right) \cdot {P_{\alpha,\lim}^{S.L}\left\lbrack {\left( {l - 1} \right)A} \right\rbrack}} + {\gamma \cdot {\left( {{\frac{1}{2\alpha\; L} \cdot \left( {X^{{S.L},L}\lbrack{lA}\rbrack} \right)^{*} \cdot \left( {X^{{S.L},L}\lbrack{lA}\rbrack} \right)^{t}} + {\frac{P_{\min}}{2\alpha} \cdot I^{S.L}}} \right).}}}$ This is shown in FIG. 9 of the drawings.

The effect of this shifting of the eigenvalues on the (theoretical ideal) convergence behavior of the algorithm will be very small, and in practice the algorithm is much more stable.

Although P_(a,lim) ^(S.L)[lA] is a sparse matrix, computing its inverse would still require L inversions of S×S matrices, which takes on the order of L·S³ operations. As we, however, do not need the inverse itself, but only its matrix-vector product with the input signals, we can also look at it as solving the system

${{P_{\alpha,\lim}^{S.L}\lbrack{lA}\rbrack} \cdot \left( \begin{matrix} {{\underset{\_}{\underset{\_}{Y}}}_{S - 1}^{L}\lbrack{lA}\rbrack}^{*} \\ \vdots \\ {{\underset{\_}{\underset{\_}{Y}}}_{1}^{L}\lbrack{lA}\rbrack}^{*} \\ {{\underset{\_}{\underset{\_}{Y}}}_{0}^{L}\lbrack{lA}\rbrack}^{*} \end{matrix} \right)} = {\left( \begin{matrix} {{\underset{\_}{\underset{\_}{X}}}_{S - 1}^{L}\lbrack{lA}\rbrack}^{*} \\ \vdots \\ {{\underset{\_}{\underset{\_}{X}}}_{1}^{L}\lbrack{lA}\rbrack}^{*} \\ {{\underset{\_}{\underset{\_}{X}}}_{0}^{L}\lbrack{lA}\rbrack}^{*} \end{matrix} \right).}$ which requires on the order of L·S² operations. Another option is to estimate the inverse of P^(S.L)[lA] directly, which also results in a number of operations proportional to L·S². However, also in this case, we have to limit the eigenvalues to assure stability.

A simple algorithm is given by:

$\left( {P^{S \cdot L}\lbrack{lA}\rbrack} \right)^{- 1} = {{\left( {1 + \gamma} \right) \cdot \left( {P^{S \cdot L}\left\lbrack {\left( {l - 1} \right)A} \right\rbrack} \right)^{- 1}} - {\frac{\gamma}{L}{{Q^{{S \cdot L},L}\lbrack{lA}\rbrack} \cdot \left( {Q^{{S \cdot L},L}\lbrack{lA}\rbrack} \right)^{h}}}}$ with

$\begin{matrix} {{Q^{{S \cdot L},L}\lbrack{lA}\rbrack} = {{\left( {P^{S \cdot L}\left\lbrack {l - {1A}} \right\rbrack} \right)^{- 1}\begin{pmatrix} {{\underset{\_}{\underset{\_}{X}}}_{S - 1}^{L}\lbrack{lA}\rbrack}^{*} \\ \vdots \\ {{\underset{\_}{\underset{\_}{X}}}_{1}^{L}\lbrack{lA}\rbrack}^{*} \\ {{{\underset{\_}{\underset{\_}{X}}}_{0}^{L}\lbrack{lA}\rbrack}^{*}\;} \end{pmatrix}} = {\left( {P^{S \cdot L}\left\lbrack {l - A} \right\rbrack} \right)^{- 1} \cdot \left( {X^{{S \cdot L},L}\lbrack{lA}\rbrack} \right)^{*}}}} & (14) \end{matrix}$

We can incorporate α, which results in

$\left( {P_{\alpha}^{S \cdot L}\lbrack{lA}\rbrack} \right)^{- 1} = {{\left( {1 + \gamma} \right) \cdot \left( {P_{\alpha}^{S \cdot L}\left\lbrack {\left( {l - 1} \right)A} \right\rbrack} \right)^{- 1}} - {\frac{\gamma}{2\;\alpha\; L}{{Q^{{S \cdot L},L}\lbrack{lA}\rbrack} \cdot {\left( {Q^{{S \cdot L},L}\lbrack{lA}\rbrack} \right)^{h}.}}}}$

The above algorithm does not guarantee a matrix (P_(a) ^(S·L)[lA])⁻¹ with positive eigenvalues, and, therefore, introduces a lot of stability problems. In the single channel case, we are able to stabilize the algorithm by using a lower limit on the estimate, which automatically results in positive eigenvalues because the matrix is diagonal, but that is not possible in the multiple channel case.

Positive Eigenvalues

An exact transformation of an algorithm for estimating P_(a) ^(S·L)[lA] with positive eigenvalues will lead to an estimation algorithm for the inverse with positive eigenvalues. This can be done by using the matrix inversion lemma. When there is matrix A such that A=B+C·D·E  (15) then the inverse matrix (A)⁻¹ of A can be expressed by (A)⁻¹=(B)⁻¹−(B)⁻¹ ·C·((D)⁻¹ +E·(B)⁻¹ ·C)⁻¹ ·E·(B)⁻¹.  (16) By choosing

$\begin{matrix} {{A = {P_{\alpha}^{S \cdot L}\lbrack{lA}\rbrack}}{B = {\left( {1 - \gamma} \right) \cdot {P_{\alpha}^{S \cdot L}\left\lbrack {\left( {l - 1} \right)A} \right\rbrack}}}{C = \left( {X^{{S \cdot L},L}\lbrack{lA}\rbrack} \right)^{*}}{D = {\frac{\gamma}{2\alpha\; L} \cdot I^{L}}}{E = {C^{h} = \left( {X^{{S \cdot L},L}\lbrack{lA}\rbrack} \right)^{t}}}} & (17) \end{matrix}$ and

$\begin{matrix} \begin{matrix} {Q = {(B)^{- 1} \cdot C}} \\ {= {E \cdot (B)^{- 1}}} \\ {= {\frac{1}{1 - \gamma} \cdot \left( {P_{\alpha}^{S \cdot L}\left\lbrack {\left( {l - 1} \right)A} \right\rbrack} \right)^{- 1} \cdot \left( {X^{{S \cdot L},L}\lbrack{lA}\rbrack} \right)^{*}}} \end{matrix} & (18) \end{matrix}$ we obtain by using Equation (14)

$\begin{matrix} {\left( {P_{\alpha}^{S \cdot L}\lbrack{lA}\rbrack} \right)^{- 1} = {{\frac{1}{1 - \gamma}{P_{\alpha}^{S \cdot L}\left\lbrack {\left( {l - 1} \right)A} \right\rbrack}^{- 1}} - {{Q^{{S \cdot L},L}\lbrack{lA}\rbrack} \cdot \left( {{\underset{\_}{\underset{\_}{D}}}^{L}\lbrack{lA}\rbrack} \right)^{- 1} \cdot \left( {Q^{{S \cdot L},L}\lbrack{lA}\rbrack} \right)^{h}}}} & (19) \end{matrix}$ with

$\begin{matrix} {{{\underset{\_}{\underset{\_}{D}}}^{L}\lbrack{lA}\rbrack} = {{\frac{2\alpha\; L}{\gamma}I^{L}} + {\left( {X^{{S \cdot L},L}\lbrack{lA}\rbrack} \right)^{t} \cdot {{Q^{{S \cdot L},L}\lbrack{lA}\rbrack}.}}}} & (20) \end{matrix}$

Equation (19) involves no matrix inversion, and only L/2+1 divisions, as the matrix D ^(L)[lA] of Equation (20) is a real valued diagonal matrix.

Limits on the Eigenvalues

An operation on the inverse power matrix that is equivalent to adding a constant to the diagonal of the (non-inverse) power matrix, would solve the problem. Adding a full (S·L)×(S·L) identity matrix and trying to find an equivalent operation on the inverse power matrix with the matrix inversion lemma, results in an algorithm that requires the matrix inversion we would like to avoid, so we try

$\begin{matrix} {{P_{\alpha,\lim}^{S \cdot L}\lbrack{lA}\rbrack} = {{\left( {1 - \gamma} \right) \cdot {P_{\alpha,\lim}^{S \cdot L}\left\lbrack {\left( {l - 1} \right)A} \right\rbrack}} + {\frac{\gamma}{2\;\alpha\; L} \cdot \left( {X_{\lim}^{{S \cdot L},L}\lbrack{lA}\rbrack} \right)^{*} \cdot \left( {X_{\lim}^{{S \cdot L},L}\lbrack{lA}\rbrack} \right)^{t}}}} & (21) \end{matrix}$ with (X _(lim) ^(S·L,L) [lA])*·(X _(lim) ^(S·L,L) [lA])^(t)=(X ^(S·L,L) [lA])*·(X ^(S·L,L) [lA])^(t) +P _(min)·2αL·I ^(S·L).  (22)

As the matrix I has rank S·L and the product matrices (X_(lim) ^(S·L.L)[lA])*·(X_(lim) ^(S·L,L)[lA])^(t) and (X^(S·L,L)[lA])*·(X^(S·L,L)[lA])^(t) both have a rank of (at most) L, this is not possible for S>1. As we need the average of (X^(S·L,L)[lA])*·(X^(S·L,L)[lA])^(t), we can find a solution by taking the average over S consecutive updates. We will try to find X_(lim) ^(S·L,L)[lA] such that

$\begin{matrix} {ɛ\left\{ {{\sum\limits_{a = 0}^{S - 1}\;\left( {{X_{\lim}^{{S \cdot L},L}\left\lbrack {\left( {l + a} \right\rbrack A} \right)}^{*} \cdot \left( {{X_{\lim}^{{S \cdot L},L}\left\lbrack \left( {l + a} \right) \right\rbrack}A} \right)^{t}} \right\}} = {ɛ\left\{ {{\sum\limits_{a = 0}^{S - 1}\;{\left( {X^{{S \cdot L},L}\left\lbrack {\left( {l + a} \right)A} \right\rbrack} \right)^{*} \cdot \left( {X^{{S \cdot L},L}\left\lbrack {\left( {l + a} \right)A} \right\rbrack}^{t} \right\}}} + {{P_{\min} \cdot 2}\alpha\;{{LS} \cdot I^{S \cdot L}}}} \right.}} \right.} & (23) \end{matrix}$ with for i=l mod S

$\begin{matrix} \begin{matrix} {{X_{\lim}^{{S \cdot L},L}\lbrack{lA}\rbrack} = {\begin{pmatrix} {{\underset{\_}{\underset{\_}{X}}}_{S - 1}^{L}\lbrack{lA}\rbrack} \\ \vdots \\ {{\underset{\_}{\underset{\_}{X}}}_{1}^{L}\lbrack{lA}\rbrack} \\ {{{\underset{\_}{\underset{\_}{X}}}_{0}^{L}\lbrack{lA}\rbrack}\;} \end{pmatrix} + \begin{pmatrix} {u_{{S - 1},i} \cdot I^{L}} \\ \vdots \\ {u_{1,i} \cdot I^{L}} \\ {u_{0,i} \cdot I^{L}} \end{pmatrix}}} \\ {= {{X^{{S \cdot L},L}\lbrack{lA}\rbrack} + {\begin{pmatrix} {u_{{S - 1},i} \cdot I^{L}} \\ \vdots \\ {u_{1,i} \cdot I^{L}} \\ {u_{0,i} \cdot I^{L}} \end{pmatrix}.}}} \end{matrix} & (24) \end{matrix}$ with

$\begin{matrix} {U^{S} = {\begin{pmatrix} u_{{S - 1},{S - 1}} & \cdots & u_{{S - 1},1} & u_{{S - 1},0} \\ \vdots & \; & \vdots & \vdots \\ u_{1,{S - 1}} & \cdots & u_{1,1} & u_{1,0} \\ u_{0,{S - 1}} & \cdots & u_{0,1} & u_{0,0} \end{pmatrix}.}} & (25) \end{matrix}$

For S=1, we get U ¹ =√{square root over (P _(min) ·2αL)}  (26)

For S>1, there are an infinite number of solutions. If we try to keep the maximum distortion (the largest matrix element) as small as possible, we have to choose, for all S>j≧0 and S>i≧0 u _(j,i) =±√{square root over (P _(min) ·2αL·)}  (27) If there is a real symmetric matrix U^(L) for S=L, then a real symmetric matrix U^(2L) for S=2L is given by

$\begin{matrix} {U^{2L} = {\begin{pmatrix} U^{L} & U^{L} \\ U^{L} & {- U^{L}} \end{pmatrix}.}} & (28) \end{matrix}$

Using the above equation, we can construct all U^(2i) with i>0. If S+1 is not a power of two, then we will use the matrix U^(2i) where 2^(i)>S+1>2^(i−1), and use the last S rows. In Table 1, the power matrix estimation algorithm using a direct inverse estimation with limits on the eigenvalues is summarized.

Initialization

1. S_(u)=2^(┌log) ² ^(S+1 ┐) U ¹ =√{square root over (P _(min) )}·2αL

for i=1 to log₂(S_(u))do

2. begin

$U^{2^{i}} = \begin{pmatrix} U^{2^{i - 1}} & U^{2^{i - 1}} \\ U^{2^{i - 1}} & {- U^{2^{i - 1}}} \end{pmatrix}$

end

3. Initialize power matrix.

Iteration

${1.\mspace{14mu}{X_{\lim}^{{S \cdot L},L}\lbrack{lA}\rbrack}} = {\begin{pmatrix} {{\underset{\_}{\underset{\_}{X}}}_{S - 1}^{L}\lbrack{lA}\rbrack} \\ \vdots \\ {{\underset{\_}{\underset{\_}{X}}}_{1}^{L}\lbrack{lA}\rbrack} \\ {{{\underset{\_}{\underset{\_}{X}}}_{0}^{L}\lbrack{lA}\rbrack}\;} \end{pmatrix} + \begin{pmatrix} {u_{{S_{u} - 1},{l\;{mod}\; S_{u}}} \cdot I^{L}} \\ \vdots \\ {u_{{S_{u} - S + 1},{l\;{mod}\; S_{u}}} \cdot I^{L}} \\ {u_{{S_{u} - S},{l\;{mod}\; S_{u}}} \cdot I^{L}} \end{pmatrix}}$ ${2.\mspace{14mu}{Q^{{S \cdot L},L}\lbrack{lA}\rbrack}} = {\frac{1}{1 - \gamma} \cdot \left( {P_{\alpha,\lim}^{S \cdot L}\left\lbrack {\left( {l - 1} \right)A} \right\rbrack} \right)^{- 1} \cdot \left( {X_{\lim}^{{S \cdot L},L}\lbrack{lA}\rbrack} \right)^{*}}$ ${3.\mspace{14mu}{{\underset{\_}{\underset{\_}{D}}}^{L}\lbrack{lA}\rbrack}} = {{\frac{2\;\alpha\; L}{\gamma}I^{L}} + {\left( {X_{\lim}^{{S \cdot L},L}\lbrack{lA}\rbrack} \right)^{t} \cdot {Q^{{S \cdot L},L}\lbrack{lA}\rbrack}}}$

4. Calculate (D ^(L)[lA])⁻¹

${5.\mspace{14mu}\left( {P_{\alpha,\lim}^{S \cdot L}\lbrack{lA}\rbrack} \right)^{- 1}} = {{\frac{1}{1 - \gamma}\left( {P_{\alpha,\lim}^{S \cdot L}\left\lbrack {\left( {l - 1} \right)A} \right\rbrack} \right)^{- 1}} - {{Q^{{S \cdot L},l}\lbrack{lA}\rbrack} \cdot \left( {{\underset{\_}{\underset{\_}{D}}}^{L}\lbrack{lA}\rbrack} \right)^{- 1} \cdot \left( {Q^{{S \cdot L},L}\lbrack{lA}\rbrack} \right)^{h}}}$

Table 1: Direct inverse power update with limits.

Note that the inverse of P^(S·L) [lA] is also a sparse matrix with the same structure, and we define

$\left( P_{\alpha,\lim}^{S \cdot L} \right)^{- 1} = \begin{pmatrix} {{\underset{\_}{\underset{\_}{T}}}_{{S - 1},{S - 1}}\lbrack{lA}\rbrack} & \ldots & {{\underset{\_}{\underset{\_}{T}}}_{{S - 1},1}\lbrack{lA}\rbrack} & {{\underset{\_}{\underset{\_}{T}}}_{0}^{L}\lbrack{lA}\rbrack} \\ \vdots & ⋰ & \vdots & \vdots \\ {{\underset{\_}{\underset{\_}{T}}}_{1,{S - 1}}^{L}\lbrack{lA}\rbrack} & \cdots & {{\underset{\_}{\underset{\_}{T}}}_{1,1}^{L}\lbrack{lA}\rbrack} & {{\underset{\_}{\underset{\_}{T}}}_{1,0}^{L}\lbrack{lA}\rbrack} \\ {{\underset{\_}{\underset{\_}{T}}}_{0,{S - 1}}^{L}\lbrack{lA}\rbrack} & \cdots & {{\underset{\_}{\underset{\_}{T}}}_{0,1}^{L}\lbrack{lA}\rbrack} & {{\underset{\_}{\underset{\_}{T}}}_{0,0}^{L}\lbrack{lA}\rbrack} \end{pmatrix}$ where for 0≦i<S and 0≦j<S T _(i,j) ^(L) [lA]=diag{T _(i,j) ^(L) [lA]}.

FIG. 5 shows, schematically, an example of a teleconferencing system TS5 using a stereo echo canceller SEC5 with adaptive filters AF5 (only one shown). The teleconferencing system comprises a far room FR5 and a near room NR5. The adaptive filter AF5 has to filter the stereo echo signals.

FIG. 6 shows an example of a stereo echo canceller SEC6 used in a teleconferencing system TS6. The stereo echo canceling has to be performed between the near room NR6 and the far room FR6. In this example, also programmable filters PF61 and PF62 are used to improve the performance of echo canceling. Programmable filters are described in U.S. Pat. No. 4,903,247.

Further, also the output of the programmable filters is supplied to a dynamic echo suppressor DES6, which is coupled with an output to the output of the stereo echo canceller. Dynamic echo suppressors are described in International Patent Application No. WO-97-45995, corresponding to U.S. Pat. No. 6,546,099.

A full stereo communication requires four stereo AECs, two on the near end side and two on the far end side. In FIG. 6, only one of these echo cancellers is depicted. Note that on each side we can combine the input signal delay-lines, the FFTs and the multiplication by the inverse power matrix of the two echo cancellers, which implies that the relative extra computational complexity for removing the cross-correlation is even further reduced. The performance of the AECs is further improved by adding Dynamic Echo Suppressors as shown.

FIG. 7 shows another application wherein a stereo echo canceller SEC7 is used in a voice-controlled audio (and video) system VCS7. To be able to recognize the local speaker by a voice recognition engine, we have to cancel the sound emitted by the audio set through the loudspeakers. This is done by using the stereo echo canceller SEC7. To improve the stereo echo canceling, also, in this example, the programmable filters PF71 and PF72 are used, and the Dynamic Echo Suppresser DES7 is used. The output of the Dynamic Echo Suppressor is coupled to a voice recognizer VR7 for handling the filtered signal.

FIG. 8 shows an example of a noise canceller NC8 for canceling the noise received on microphones in a room R8 together with a speech signal sp1 from a person in the room. In this example, the microphones supply signals to a beam former BF8 which beam former supplies signals to the noise canceller NC8 and to programmable filters PF81, PF82 and PF83. Further the noise canceller comprises a dynamic echo suppressor DES8. The output of the Dynamic Echo Suppressor is coupled to the output of the noise suppressor to supply an estimate of the received speech sp2.

Also in the multiple input noise canceller, we can apply a DES (which is, in fact, not suppressing an echo, but is similar to the DES in the AEC's case) and programmable filters to improve performance, as shown in FIG. 8. An extra problem is that the inputs of the filters may contain some elements of the desired signal (“signal leakage”), because the beam former is not perfect. When the desired signal is speech signal, a speech detector can be used to improve the behavior of the MFDAF.

Above some examples of application of a stereo echo canceller and of a noise canceller are described. It is to be noted that the invention can be used in different applications and is not restricted to the described applications. 

1. An adaptive filter comprising at least two inputs for receiving at least two signals, and an output for supplying an output signal, characterized in that the adaptive filter further comprises: means for determining coefficient updates in a transformed domain, said transformed domain being the frequency domain; an update algorithm with transformed auto- and a cross correlation matrices; and means for reducing the effect of correlation between the input signals on the coefficient updates, said reducing means multiplying the frequency domain input signals with the inverse of the input channel's power matrix.
 2. The adaptive filter as claimed in claim 1, characterized in that the update algorithm comprises solving a linear set of equations with the input channel power matrix as one of the elements of the linear set of equations.
 3. A signal processing device comprising an adaptive filter as claimed in claim
 1. 4. The signal processing device as claimed in claim 3, characterized in that the device further comprises a dynamic echo and noise suppressor as a post-processing device coupled to an output of the adaptive filter.
 5. The signal processing device as claimed in claim 3, characterized in that the signal-processing device comprises a programmable filter.
 6. A teleconferencing system comprising at least one signal-processing device as claimed in claim
 3. 7. A voice-controlled electronic device comprising at least one signal-processing device as claimed in claim
 3. 8. A noise cancellation system comprising at least one signal-processing device as claimed in claim
 3. 9. An adaptive filter comprising at least two inputs for receiving at least two signals, and an output for supplying an output signal, characterized in that the adaptive filter further comprises: means for determining coefficient updates in a transformed domain, said transformed domain being the frequency domain; an update algorithm with transformed auto- and a cross correlation matrices; and means for reducing the effect of correlation between the input signals on the coefficient updates, said reducing means multiplying the frequency domain input signals with the inverse of the input channel's power matrix, characterized in that said adaptive filter comprises a first order recursive network for determining the input channel's power matrix, said first order recursive network receiving the product of the frequency domain input signals and their conjugates as input, and in that, at each iteration, a certain positive value is added to all elements of the main diagonal.
 10. An adaptive filter comprising at least two inputs for receiving at least two signals, and an output for supplying an output signal, characterized in that the adaptive filter further comprises: means for determining coefficient updates in a transformed domain, said transformed domain being the frequency domain; an update algorithm with transformed auto- and a cross correlation matrices; and means for reducing the effect of correlation between the input signals on the coefficient updates, said reducing means multiplying the frequency domain input signals with the inverse of the input channel's power matrix, characterized in that the adaptive filter comprises means for directly estimating the inverse of the input channel's matrix using a recursive update algorithm, and in that a limit is imposed on the eigenvalues of the matrix.
 11. A method for filtering at least two signals and for supplying an output signal, characterized in that the method comprises the steps: determining coefficient updates in the frequency domain; using an update algorithm with transformed auto- and a cross correlation matrices; and reducing the effect of correlation between the input signals on the coefficient updates by multiplying the frequency domain input signals with the inverse of the input channel's power matrix. 